<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>edges_color [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_filters.html">过滤器</a> / <a href="toc_filters_edges.html">Edges</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">edges_color</span><span data-if="c" style="display:none;">edges_color</span><span data-if="cpp" style="display:none;">EdgesColor</span><span data-if="dotnet" style="display:none;">EdgesColor</span><span data-if="python" style="display:none;">edges_color</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">edges_color</span><span data-if="c" style="display:none;">edges_color</span><span data-if="cpp" style="display:none;">EdgesColor</span><span data-if="dotnet" style="display:none;">EdgesColor</span><span data-if="python" style="display:none;">edges_color</span></code> — Extract color edges using Canny, Deriche, or Shen filters.</p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>edges_color</b>(<a href="#Image"><i>Image</i></a> : <a href="#ImaAmp"><i>ImaAmp</i></a>, <a href="#ImaDir"><i>ImaDir</i></a> : <a href="#Filter"><i>Filter</i></a>, <a href="#Alpha"><i>Alpha</i></a>, <a href="#NMS"><i>NMS</i></a>, <a href="#Low"><i>Low</i></a>, <a href="#High"><i>High</i></a> : )</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>edges_color</b>(const Hobject <a href="#Image"><i>Image</i></a>, Hobject* <a href="#ImaAmp"><i>ImaAmp</i></a>, Hobject* <a href="#ImaDir"><i>ImaDir</i></a>, const char* <a href="#Filter"><i>Filter</i></a>, double <a href="#Alpha"><i>Alpha</i></a>, const char* <a href="#NMS"><i>NMS</i></a>, const Hlong <a href="#Low"><i>Low</i></a>, const Hlong <a href="#High"><i>High</i></a>)</code></p>
<p>
<code>Herror <b>T_edges_color</b>(const Hobject <a href="#Image"><i>Image</i></a>, Hobject* <a href="#ImaAmp"><i>ImaAmp</i></a>, Hobject* <a href="#ImaDir"><i>ImaDir</i></a>, const Htuple <a href="#Filter"><i>Filter</i></a>, const Htuple <a href="#Alpha"><i>Alpha</i></a>, const Htuple <a href="#NMS"><i>NMS</i></a>, const Htuple <a href="#Low"><i>Low</i></a>, const Htuple <a href="#High"><i>High</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>EdgesColor</b>(const HObject&amp; <a href="#Image"><i>Image</i></a>, HObject* <a href="#ImaAmp"><i>ImaAmp</i></a>, HObject* <a href="#ImaDir"><i>ImaDir</i></a>, const HTuple&amp; <a href="#Filter"><i>Filter</i></a>, const HTuple&amp; <a href="#Alpha"><i>Alpha</i></a>, const HTuple&amp; <a href="#NMS"><i>NMS</i></a>, const HTuple&amp; <a href="#Low"><i>Low</i></a>, const HTuple&amp; <a href="#High"><i>High</i></a>)</code></p>
<p>
<code><a href="HImage.html">HImage</a> <a href="HImage.html">HImage</a>::<b>EdgesColor</b>(HImage* <a href="#ImaDir"><i>ImaDir</i></a>, const HString&amp; <a href="#Filter"><i>Filter</i></a>, double <a href="#Alpha"><i>Alpha</i></a>, const HString&amp; <a href="#NMS"><i>NMS</i></a>, Hlong <a href="#Low"><i>Low</i></a>, Hlong <a href="#High"><i>High</i></a>) const</code></p>
<p>
<code><a href="HImage.html">HImage</a> <a href="HImage.html">HImage</a>::<b>EdgesColor</b>(HImage* <a href="#ImaDir"><i>ImaDir</i></a>, const char* <a href="#Filter"><i>Filter</i></a>, double <a href="#Alpha"><i>Alpha</i></a>, const char* <a href="#NMS"><i>NMS</i></a>, Hlong <a href="#Low"><i>Low</i></a>, Hlong <a href="#High"><i>High</i></a>) const</code></p>
<p>
<code><a href="HImage.html">HImage</a> <a href="HImage.html">HImage</a>::<b>EdgesColor</b>(HImage* <a href="#ImaDir"><i>ImaDir</i></a>, const wchar_t* <a href="#Filter"><i>Filter</i></a>, double <a href="#Alpha"><i>Alpha</i></a>, const wchar_t* <a href="#NMS"><i>NMS</i></a>, Hlong <a href="#Low"><i>Low</i></a>, Hlong <a href="#High"><i>High</i></a>) const  <span class="signnote">
            (
            Windows only)
          </span></code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>EdgesColor</b>(<a href="HObject.html">HObject</a> <a href="#Image"><i>image</i></a>, out <a href="HObject.html">HObject</a> <a href="#ImaAmp"><i>imaAmp</i></a>, out <a href="HObject.html">HObject</a> <a href="#ImaDir"><i>imaDir</i></a>, <a href="HTuple.html">HTuple</a> <a href="#Filter"><i>filter</i></a>, <a href="HTuple.html">HTuple</a> <a href="#Alpha"><i>alpha</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NMS"><i>NMS</i></a>, <a href="HTuple.html">HTuple</a> <a href="#Low"><i>low</i></a>, <a href="HTuple.html">HTuple</a> <a href="#High"><i>high</i></a>)</code></p>
<p>
<code><a href="HImage.html">HImage</a> <a href="HImage.html">HImage</a>.<b>EdgesColor</b>(out <a href="HImage.html">HImage</a> <a href="#ImaDir"><i>imaDir</i></a>, string <a href="#Filter"><i>filter</i></a>, double <a href="#Alpha"><i>alpha</i></a>, string <a href="#NMS"><i>NMS</i></a>, int <a href="#Low"><i>low</i></a>, int <a href="#High"><i>high</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>edges_color</b>(<a href="#Image"><i>image</i></a>: HObject, <a href="#Filter"><i>filter</i></a>: str, <a href="#Alpha"><i>alpha</i></a>: float, <a href="#NMS"><i>nms</i></a>: str, <a href="#Low"><i>low</i></a>: int, <a href="#High"><i>high</i></a>: int) -&gt; Tuple[HObject, HObject]</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p><code><span data-if="hdevelop" style="display:inline">edges_color</span><span data-if="c" style="display:none">edges_color</span><span data-if="cpp" style="display:none">EdgesColor</span><span data-if="com" style="display:none">EdgesColor</span><span data-if="dotnet" style="display:none">EdgesColor</span><span data-if="python" style="display:none">edges_color</span></code> extracts color edges from the input image
<a href="#Image"><i><code><span data-if="hdevelop" style="display:inline">Image</span><span data-if="c" style="display:none">Image</span><span data-if="cpp" style="display:none">Image</span><span data-if="com" style="display:none">Image</span><span data-if="dotnet" style="display:none">image</span><span data-if="python" style="display:none">image</span></code></i></a>.  To define color edges, the multi-channel image
<a href="#Image"><i><code><span data-if="hdevelop" style="display:inline">Image</span><span data-if="c" style="display:none">Image</span><span data-if="cpp" style="display:none">Image</span><span data-if="com" style="display:none">Image</span><span data-if="dotnet" style="display:none">image</span><span data-if="python" style="display:none">image</span></code></i></a> is regarded as a mapping <span title="1" style="vertical-align:-0.258561em" class="math"><!-- Created by MetaPost 1.902 on 2023.05.15:2033 --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="5.61849em" height="1.12968em" viewBox="0 0 89.895844 18.074936">
<!-- Original BoundingBox: -44.947922 -9.037476 44.947922 9.037460 -->
  <defs>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmmi7_110">
      <path style="fill-rule: evenodd;" d="M122.000000 -63.000000C118.000000 -50.000000,112.000000 -25.000000,112.000000 -22.000000C112.000000 -0.000000,130.000000 10.000000,146.000000 10.000000C164.000000 10.000000,180.000000 -3.000000,185.000000 -12.000000C190.000000 -21.000000,198.000000 -53.000000,203.000000 -74.000000C208.000000 -93.000000,219.000000 -139.000000,225.000000 -164.000000C231.000000 -186.000000,237.000000 -208.000000,242.000000 -231.000000C253.000000 -272.000000,255.000000 -280.000000,284.000000 -321.000000C312.000000 -361.000000,359.000000 -413.000000,434.000000 -413.000000C492.000000 -413.000000,493.000000 -362.000000,493.000000 -343.000000C493.000000 -283.000000,450.000000 -172.000000,434.000000 -130.000000C423.000000 -102.000000,419.000000 -93.000000,419.000000 -76.000000C419.000000 -23.000000,463.000000 10.000000,514.000000 10.000000C614.000000 10.000000,658.000000 -128.000000,658.000000 -143.000000C658.000000 -156.000000,645.000000 -156.000000,642.000000 -156.000000C628.000000 -156.000000,627.000000 -150.000000,623.000000 -139.000000C600.000000 -59.000000,557.000000 -18.000000,517.000000 -18.000000C496.000000 -18.000000,492.000000 -32.000000,492.000000 -53.000000C492.000000 -76.000000,497.000000 -89.000000,515.000000 -134.000000C527.000000 -165.000000,568.000000 -271.000000,568.000000 -327.000000C568.000000 -424.000000,491.000000 -441.000000,438.000000 -441.000000C355.000000 -441.000000,299.000000 -390.000000,269.000000 -350.000000C262.000000 -419.000000,203.000000 -441.000000,162.000000 -441.000000C119.000000 -441.000000,96.000000 -410.000000,83.000000 -387.000000C61.000000 -350.000000,47.000000 -293.000000,47.000000 -288.000000C47.000000 -275.000000,61.000000 -275.000000,64.000000 -275.000000C78.000000 -275.000000,79.000000 -278.000000,86.000000 -305.000000C101.000000 -364.000000,120.000000 -413.000000,159.000000 -413.000000C185.000000 -413.000000,192.000000 -391.000000,192.000000 -364.000000C192.000000 -345.000000,183.000000 -308.000000,176.000000 -281.000000C169.000000 -254.000000,159.000000 -213.000000,154.000000 -191.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmr10_58">
      <path style="fill-rule: evenodd;" d="M192.000000 -378.000000C192.000000 -407.000000,168.000000 -431.000000,139.000000 -431.000000C110.000000 -431.000000,86.000000 -407.000000,86.000000 -378.000000C86.000000 -349.000000,110.000000 -325.000000,139.000000 -325.000000C168.000000 -325.000000,192.000000 -349.000000,192.000000 -378.000000M192.000000 -53.000000C192.000000 -82.000000,168.000000 -106.000000,139.000000 -106.000000C110.000000 -106.000000,86.000000 -82.000000,86.000000 -53.000000C86.000000 -24.000000,110.000000 -0.000000,139.000000 -0.000000C168.000000 -0.000000,192.000000 -24.000000,192.000000 -53.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmsy10_33">
      <path style="fill-rule: evenodd;" d="M834.000000 -230.000000C779.000000 -188.000000,752.000000 -147.000000,744.000000 -134.000000C699.000000 -65.000000,691.000000 -2.000000,691.000000 -1.000000C691.000000 11.000000,703.000000 11.000000,711.000000 11.000000C728.000000 11.000000,729.000000 9.000000,733.000000 -9.000000C756.000000 -107.000000,815.000000 -191.000000,928.000000 -237.000000C940.000000 -241.000000,943.000000 -243.000000,943.000000 -250.000000C943.000000 -257.000000,937.000000 -260.000000,935.000000 -261.000000C891.000000 -278.000000,770.000000 -328.000000,732.000000 -496.000000C729.000000 -508.000000,728.000000 -511.000000,711.000000 -511.000000C703.000000 -511.000000,691.000000 -511.000000,691.000000 -499.000000C691.000000 -497.000000,700.000000 -434.000000,742.000000 -367.000000C762.000000 -337.000000,791.000000 -302.000000,834.000000 -270.000000L91.000000 -270.000000C73.000000 -270.000000,55.000000 -270.000000,55.000000 -250.000000C55.000000 -230.000000,73.000000 -230.000000,91.000000 -230.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmsy10_55">
      <path style="fill-rule: evenodd;" d="M95.000000 -230.000000C101.000000 -230.000000,123.000000 -230.000000,123.000000 -250.000000C123.000000 -270.000000,101.000000 -270.000000,95.000000 -270.000000L95.000000 -401.000000C95.000000 -417.000000,95.000000 -436.000000,75.000000 -436.000000C55.000000 -436.000000,55.000000 -417.000000,55.000000 -401.000000L55.000000 -99.000000C55.000000 -83.000000,55.000000 -64.000000,75.000000 -64.000000C95.000000 -64.000000,95.000000 -83.000000,95.000000 -99.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_82">
      <path style="fill-rule: evenodd;" d="M375.000000 -614.000000C381.000000 -638.000000,384.000000 -648.000000,403.000000 -651.000000C412.000000 -652.000000,444.000000 -652.000000,464.000000 -652.000000C535.000000 -652.000000,646.000000 -652.000000,646.000000 -553.000000C646.000000 -519.000000,630.000000 -450.000000,591.000000 -411.000000C565.000000 -385.000000,512.000000 -353.000000,422.000000 -353.000000L310.000000 -353.000000M519.000000 -340.000000C620.000000 -362.000000,739.000000 -432.000000,739.000000 -533.000000C739.000000 -619.000000,649.000000 -683.000000,518.000000 -683.000000L233.000000 -683.000000C213.000000 -683.000000,204.000000 -683.000000,204.000000 -663.000000C204.000000 -652.000000,213.000000 -652.000000,232.000000 -652.000000C234.000000 -652.000000,253.000000 -652.000000,270.000000 -650.000000C288.000000 -648.000000,297.000000 -647.000000,297.000000 -634.000000C297.000000 -630.000000,296.000000 -627.000000,293.000000 -615.000000L159.000000 -78.000000C149.000000 -39.000000,147.000000 -31.000000,68.000000 -31.000000C50.000000 -31.000000,41.000000 -31.000000,41.000000 -11.000000C41.000000 -0.000000,53.000000 -0.000000,55.000000 -0.000000L181.000000 -0.000000L83.000000 -0.000000L153.000000 -3.000000L181.000000 -3.000000L209.000000 -3.000000L280.000000 -0.000000L308.000000 -0.000000C316.000000 -0.000000,328.000000 -0.000000,328.000000 -20.000000C328.000000 -31.000000,319.000000 -31.000000,300.000000 -31.000000C263.000000 -31.000000,235.000000 -31.000000,235.000000 -49.000000C235.000000 -55.000000,237.000000 -60.000000,238.000000 -66.000000L304.000000 -331.000000L423.000000 -331.000000C514.000000 -331.000000,532.000000 -275.000000,532.000000 -240.000000C532.000000 -225.000000,524.000000 -194.000000,518.000000 -171.000000C511.000000 -143.000000,502.000000 -106.000000,502.000000 -86.000000C502.000000 22.000000,622.000000 22.000000,635.000000 22.000000C720.000000 22.000000,755.000000 -79.000000,755.000000 -93.000000C755.000000 -105.000000,744.000000 -105.000000,743.000000 -105.000000C734.000000 -105.000000,732.000000 -98.000000,730.000000 -91.000000C705.000000 -17.000000,662.000000 -0.000000,639.000000 -0.000000C606.000000 -0.000000,599.000000 -22.000000,599.000000 -61.000000C599.000000 -92.000000,605.000000 -143.000000,609.000000 -175.000000C611.000000 -189.000000,613.000000 -208.000000,613.000000 -222.000000C613.000000 -299.000000,546.000000 -330.000000,519.000000 -340.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_102">
      <path style="fill-rule: evenodd;" d="M367.000000 -400.000000L453.000000 -400.000000C473.000000 -400.000000,483.000000 -400.000000,483.000000 -420.000000C483.000000 -431.000000,473.000000 -431.000000,456.000000 -431.000000L373.000000 -431.000000L394.000000 -545.000000C398.000000 -566.000000,412.000000 -637.000000,418.000000 -649.000000C427.000000 -668.000000,444.000000 -683.000000,465.000000 -683.000000C469.000000 -683.000000,495.000000 -683.000000,514.000000 -665.000000C470.000000 -661.000000,460.000000 -626.000000,460.000000 -611.000000C460.000000 -588.000000,478.000000 -576.000000,497.000000 -576.000000C523.000000 -576.000000,552.000000 -598.000000,552.000000 -636.000000C552.000000 -682.000000,506.000000 -705.000000,465.000000 -705.000000C431.000000 -705.000000,368.000000 -687.000000,338.000000 -588.000000C332.000000 -567.000000,329.000000 -557.000000,305.000000 -431.000000L236.000000 -431.000000C217.000000 -431.000000,206.000000 -431.000000,206.000000 -412.000000C206.000000 -400.000000,215.000000 -400.000000,234.000000 -400.000000L300.000000 -400.000000L225.000000 -5.000000C207.000000 92.000000,190.000000 183.000000,138.000000 183.000000C134.000000 183.000000,109.000000 183.000000,90.000000 165.000000C136.000000 162.000000,145.000000 126.000000,145.000000 111.000000C145.000000 88.000000,127.000000 76.000000,108.000000 76.000000C82.000000 76.000000,53.000000 98.000000,53.000000 136.000000C53.000000 181.000000,97.000000 205.000000,138.000000 205.000000C193.000000 205.000000,233.000000 146.000000,251.000000 108.000000C283.000000 45.000000,306.000000 -76.000000,307.000000 -83.000000"></path>
    </g>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmr7_50">
      <path style="fill-rule: evenodd;" d="M505.000000 -182.000000L471.000000 -182.000000C468.000000 -160.000000,458.000000 -101.000000,445.000000 -91.000000C437.000000 -85.000000,360.000000 -85.000000,346.000000 -85.000000L162.000000 -85.000000C267.000000 -178.000000,302.000000 -206.000000,362.000000 -253.000000C436.000000 -312.000000,505.000000 -374.000000,505.000000 -469.000000C505.000000 -590.000000,399.000000 -664.000000,271.000000 -664.000000C147.000000 -664.000000,63.000000 -577.000000,63.000000 -485.000000C63.000000 -434.000000,106.000000 -429.000000,116.000000 -429.000000C140.000000 -429.000000,169.000000 -446.000000,169.000000 -482.000000C169.000000 -500.000000,162.000000 -535.000000,110.000000 -535.000000C141.000000 -606.000000,209.000000 -628.000000,256.000000 -628.000000C356.000000 -628.000000,408.000000 -550.000000,408.000000 -469.000000C408.000000 -382.000000,346.000000 -313.000000,314.000000 -277.000000L73.000000 -39.000000C63.000000 -30.000000,63.000000 -28.000000,63.000000 -0.000000L475.000000 -0.000000"></path>
    </g>
  </defs>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,0.068069 13.937958)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_102"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,14.015656 13.937958)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_58"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,22.871353 13.937958)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_82"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,35.097824 8.153290)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr7_50"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,46.676575 13.937958)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmsy10_55"></use>
    <use xlink:href="#GLYPHcmsy10_33"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,67.044647 13.937958)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_82"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,79.271103 8.153290)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_110"></use>
  </g>
</svg></span>, where n is the number of channels in
<a href="#Image"><i><code><span data-if="hdevelop" style="display:inline">Image</span><span data-if="c" style="display:none">Image</span><span data-if="cpp" style="display:none">Image</span><span data-if="com" style="display:none">Image</span><span data-if="dotnet" style="display:none">image</span><span data-if="python" style="display:none">image</span></code></i></a>.  For such functions, there is a natural extension of
the gradient: the metric tensor G, which can be used to
calculate for every direction, given by the direction vector
v, the rate of change of f in the direction v.  For
notational convenience, G will be regarded as a
two-dimensional matrix.  Thus, the rate of change of the function
f in the direction v is given by v^T G v,
where
<span title="2" class="displaymath"><!-- Created by MetaPost 1.902 on 2023.05.15:2033 --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="25.8839em" height="5.96563em" viewBox="0 0 414.142044 95.450104">
<!-- Original BoundingBox: -207.071030 -47.725052 207.071014 47.725052 -->
  <defs>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmmi7_84">
      <path style="fill-rule: evenodd;" d="M486.000000 -605.000000C493.000000 -634.000000,495.000000 -637.000000,517.000000 -639.000000C522.000000 -640.000000,557.000000 -640.000000,577.000000 -640.000000C638.000000 -640.000000,664.000000 -640.000000,689.000000 -632.000000C734.000000 -618.000000,736.000000 -589.000000,736.000000 -553.000000C736.000000 -537.000000,736.000000 -524.000000,729.000000 -472.000000L727.000000 -461.000000C727.000000 -451.000000,734.000000 -446.000000,744.000000 -446.000000C759.000000 -446.000000,761.000000 -455.000000,763.000000 -471.000000L790.000000 -662.000000C790.000000 -676.000000,778.000000 -676.000000,760.000000 -676.000000L145.000000 -676.000000C120.000000 -676.000000,118.000000 -676.000000,111.000000 -655.000000L48.000000 -478.000000C47.000000 -474.000000,43.000000 -465.000000,43.000000 -460.000000C43.000000 -456.000000,45.000000 -446.000000,60.000000 -446.000000C73.000000 -446.000000,75.000000 -451.000000,81.000000 -470.000000C139.000000 -630.000000,172.000000 -640.000000,324.000000 -640.000000L366.000000 -640.000000C396.000000 -640.000000,397.000000 -639.000000,397.000000 -630.000000C397.000000 -629.000000,397.000000 -624.000000,393.000000 -609.000000L261.000000 -83.000000C252.000000 -46.000000,249.000000 -36.000000,144.000000 -36.000000C108.000000 -36.000000,99.000000 -36.000000,99.000000 -14.000000C99.000000 -11.000000,101.000000 -0.000000,116.000000 -0.000000C144.000000 -0.000000,174.000000 -3.000000,202.000000 -3.000000C230.000000 -3.000000,260.000000 -4.000000,288.000000 -4.000000C316.000000 -4.000000,350.000000 -4.000000,378.000000 -3.000000C405.000000 -2.000000,435.000000 -0.000000,462.000000 -0.000000C470.000000 -0.000000,485.000000 -0.000000,485.000000 -22.000000C485.000000 -36.000000,475.000000 -36.000000,444.000000 -36.000000C425.000000 -36.000000,405.000000 -37.000000,386.000000 -38.000000C352.000000 -41.000000,350.000000 -45.000000,350.000000 -57.000000C350.000000 -64.000000,350.000000 -66.000000,354.000000 -80.000000"></path>
    </g>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmmi7_105">
      <path style="fill-rule: evenodd;" d="M324.000000 -625.000000C324.000000 -641.000000,312.000000 -663.000000,284.000000 -663.000000C257.000000 -663.000000,228.000000 -637.000000,228.000000 -608.000000C228.000000 -591.000000,241.000000 -570.000000,268.000000 -570.000000C297.000000 -570.000000,324.000000 -598.000000,324.000000 -625.000000M120.000000 -117.000000C116.000000 -104.000000,111.000000 -92.000000,111.000000 -75.000000C111.000000 -28.000000,151.000000 10.000000,206.000000 10.000000C306.000000 10.000000,350.000000 -128.000000,350.000000 -143.000000C350.000000 -156.000000,337.000000 -156.000000,334.000000 -156.000000C320.000000 -156.000000,319.000000 -150.000000,315.000000 -139.000000C292.000000 -59.000000,248.000000 -18.000000,209.000000 -18.000000C189.000000 -18.000000,184.000000 -31.000000,184.000000 -53.000000C184.000000 -76.000000,191.000000 -95.000000,200.000000 -117.000000C210.000000 -144.000000,221.000000 -171.000000,232.000000 -197.000000C241.000000 -221.000000,277.000000 -312.000000,281.000000 -324.000000C284.000000 -334.000000,287.000000 -346.000000,287.000000 -356.000000C287.000000 -403.000000,247.000000 -441.000000,192.000000 -441.000000C93.000000 -441.000000,47.000000 -305.000000,47.000000 -288.000000C47.000000 -275.000000,61.000000 -275.000000,64.000000 -275.000000C78.000000 -275.000000,79.000000 -280.000000,82.000000 -291.000000C108.000000 -377.000000,152.000000 -413.000000,189.000000 -413.000000C205.000000 -413.000000,214.000000 -405.000000,214.000000 -378.000000C214.000000 -355.000000,208.000000 -340.000000,183.000000 -278.000000"></path>
    </g>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmmi7_110">
      <path style="fill-rule: evenodd;" d="M122.000000 -63.000000C118.000000 -50.000000,112.000000 -25.000000,112.000000 -22.000000C112.000000 -0.000000,130.000000 10.000000,146.000000 10.000000C164.000000 10.000000,180.000000 -3.000000,185.000000 -12.000000C190.000000 -21.000000,198.000000 -53.000000,203.000000 -74.000000C208.000000 -93.000000,219.000000 -139.000000,225.000000 -164.000000C231.000000 -186.000000,237.000000 -208.000000,242.000000 -231.000000C253.000000 -272.000000,255.000000 -280.000000,284.000000 -321.000000C312.000000 -361.000000,359.000000 -413.000000,434.000000 -413.000000C492.000000 -413.000000,493.000000 -362.000000,493.000000 -343.000000C493.000000 -283.000000,450.000000 -172.000000,434.000000 -130.000000C423.000000 -102.000000,419.000000 -93.000000,419.000000 -76.000000C419.000000 -23.000000,463.000000 10.000000,514.000000 10.000000C614.000000 10.000000,658.000000 -128.000000,658.000000 -143.000000C658.000000 -156.000000,645.000000 -156.000000,642.000000 -156.000000C628.000000 -156.000000,627.000000 -150.000000,623.000000 -139.000000C600.000000 -59.000000,557.000000 -18.000000,517.000000 -18.000000C496.000000 -18.000000,492.000000 -32.000000,492.000000 -53.000000C492.000000 -76.000000,497.000000 -89.000000,515.000000 -134.000000C527.000000 -165.000000,568.000000 -271.000000,568.000000 -327.000000C568.000000 -424.000000,491.000000 -441.000000,438.000000 -441.000000C355.000000 -441.000000,299.000000 -390.000000,269.000000 -350.000000C262.000000 -419.000000,203.000000 -441.000000,162.000000 -441.000000C119.000000 -441.000000,96.000000 -410.000000,83.000000 -387.000000C61.000000 -350.000000,47.000000 -293.000000,47.000000 -288.000000C47.000000 -275.000000,61.000000 -275.000000,64.000000 -275.000000C78.000000 -275.000000,79.000000 -278.000000,86.000000 -305.000000C101.000000 -364.000000,120.000000 -413.000000,159.000000 -413.000000C185.000000 -413.000000,192.000000 -391.000000,192.000000 -364.000000C192.000000 -345.000000,183.000000 -308.000000,176.000000 -281.000000C169.000000 -254.000000,159.000000 -213.000000,154.000000 -191.000000"></path>
    </g>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmmi7_120">
      <path style="fill-rule: evenodd;" d="M249.000000 -106.000000C239.000000 -72.000000,206.000000 -18.000000,155.000000 -18.000000C152.000000 -18.000000,122.000000 -18.000000,101.000000 -32.000000C142.000000 -45.000000,145.000000 -81.000000,145.000000 -87.000000C145.000000 -109.000000,128.000000 -124.000000,105.000000 -124.000000C77.000000 -124.000000,48.000000 -100.000000,48.000000 -63.000000C48.000000 -13.000000,104.000000 10.000000,153.000000 10.000000C199.000000 10.000000,240.000000 -19.000000,265.000000 -61.000000C289.000000 -8.000000,344.000000 10.000000,384.000000 10.000000C499.000000 10.000000,560.000000 -115.000000,560.000000 -143.000000C560.000000 -156.000000,547.000000 -156.000000,544.000000 -156.000000C530.000000 -156.000000,529.000000 -151.000000,525.000000 -139.000000C504.000000 -70.000000,444.000000 -18.000000,388.000000 -18.000000C348.000000 -18.000000,327.000000 -45.000000,327.000000 -83.000000C327.000000 -109.000000,351.000000 -200.000000,379.000000 -311.000000C399.000000 -388.000000,444.000000 -413.000000,477.000000 -413.000000C479.000000 -413.000000,510.000000 -413.000000,531.000000 -399.000000C499.000000 -390.000000,487.000000 -362.000000,487.000000 -344.000000C487.000000 -322.000000,504.000000 -307.000000,527.000000 -307.000000C550.000000 -307.000000,583.000000 -326.000000,583.000000 -368.000000C583.000000 -424.000000,519.000000 -441.000000,479.000000 -441.000000C429.000000 -441.000000,389.000000 -408.000000,367.000000 -370.000000C349.000000 -411.000000,303.000000 -441.000000,247.000000 -441.000000C135.000000 -441.000000,71.000000 -318.000000,71.000000 -288.000000C71.000000 -275.000000,85.000000 -275.000000,88.000000 -275.000000C101.000000 -275.000000,102.000000 -279.000000,107.000000 -292.000000C132.000000 -370.000000,195.000000 -413.000000,244.000000 -413.000000C277.000000 -413.000000,304.000000 -395.000000,304.000000 -347.000000C304.000000 -327.000000,292.000000 -277.000000,283.000000 -243.000000"></path>
    </g>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmmi7_121">
      <path style="fill-rule: evenodd;" d="M556.000000 -377.000000C560.000000 -391.000000,560.000000 -393.000000,560.000000 -399.000000C560.000000 -419.000000,544.000000 -431.000000,527.000000 -431.000000C516.000000 -431.000000,497.000000 -426.000000,486.000000 -407.000000C483.000000 -401.000000,475.000000 -369.000000,470.000000 -349.000000L449.000000 -266.000000C443.000000 -242.000000,412.000000 -116.000000,409.000000 -105.000000C408.000000 -105.000000,364.000000 -18.000000,286.000000 -18.000000C218.000000 -18.000000,218.000000 -83.000000,218.000000 -101.000000C218.000000 -155.000000,241.000000 -218.000000,271.000000 -295.000000C283.000000 -327.000000,288.000000 -339.000000,288.000000 -356.000000C288.000000 -404.000000,247.000000 -441.000000,193.000000 -441.000000C92.000000 -441.000000,47.000000 -305.000000,47.000000 -288.000000C47.000000 -275.000000,61.000000 -275.000000,64.000000 -275.000000C78.000000 -275.000000,79.000000 -280.000000,82.000000 -291.000000C107.000000 -374.000000,150.000000 -413.000000,190.000000 -413.000000C207.000000 -413.000000,215.000000 -402.000000,215.000000 -378.000000C215.000000 -355.000000,206.000000 -333.000000,201.000000 -320.000000C153.000000 -198.000000,143.000000 -161.000000,143.000000 -117.000000C143.000000 -100.000000,143.000000 -53.000000,182.000000 -21.000000C213.000000 5.000000,255.000000 10.000000,282.000000 10.000000C322.000000 10.000000,358.000000 -5.000000,391.000000 -35.000000C378.000000 20.000000,367.000000 62.000000,325.000000 112.000000C298.000000 143.000000,258.000000 176.000000,205.000000 176.000000C198.000000 176.000000,151.000000 176.000000,130.000000 143.000000C184.000000 137.000000,184.000000 89.000000,184.000000 88.000000C184.000000 56.000000,155.000000 50.000000,145.000000 50.000000C120.000000 50.000000,87.000000 70.000000,87.000000 116.000000C87.000000 167.000000,135.000000 204.000000,206.000000 204.000000C307.000000 204.000000,430.000000 126.000000,461.000000 1.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmr10_61">
      <path style="fill-rule: evenodd;" d="M687.000000 -327.000000C702.000000 -327.000000,721.000000 -327.000000,721.000000 -347.000000C721.000000 -367.000000,702.000000 -367.000000,688.000000 -367.000000L89.000000 -367.000000C75.000000 -367.000000,56.000000 -367.000000,56.000000 -347.000000C56.000000 -327.000000,75.000000 -327.000000,90.000000 -327.000000M688.000000 -133.000000C702.000000 -133.000000,721.000000 -133.000000,721.000000 -153.000000C721.000000 -173.000000,702.000000 -173.000000,687.000000 -173.000000L90.000000 -173.000000C75.000000 -173.000000,56.000000 -173.000000,56.000000 -153.000000C56.000000 -133.000000,75.000000 -133.000000,89.000000 -133.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_58">
      <path style="fill-rule: evenodd;" d="M192.000000 -53.000000C192.000000 -82.000000,168.000000 -106.000000,139.000000 -106.000000C110.000000 -106.000000,86.000000 -82.000000,86.000000 -53.000000C86.000000 -24.000000,110.000000 -0.000000,139.000000 -0.000000C168.000000 -0.000000,192.000000 -24.000000,192.000000 -53.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_64">
      <path style="fill-rule: evenodd;" d="M463.000000 -339.000000C453.000000 -401.000000,412.000000 -457.000000,334.000000 -457.000000C273.000000 -457.000000,208.000000 -441.000000,130.000000 -363.000000C47.000000 -280.000000,40.000000 -187.000000,40.000000 -156.000000C40.000000 -94.000000,84.000000 22.000000,224.000000 22.000000C462.000000 22.000000,566.000000 -314.000000,566.000000 -457.000000C566.000000 -616.000000,473.000000 -716.000000,350.000000 -716.000000C205.000000 -716.000000,159.000000 -586.000000,159.000000 -558.000000C159.000000 -544.000000,167.000000 -523.000000,197.000000 -523.000000C230.000000 -523.000000,251.000000 -553.000000,251.000000 -576.000000C251.000000 -611.000000,220.000000 -611.000000,204.000000 -611.000000C248.000000 -685.000000,319.000000 -691.000000,348.000000 -691.000000C421.000000 -691.000000,491.000000 -639.000000,491.000000 -510.000000C491.000000 -471.000000,485.000000 -420.000000,464.000000 -339.000000M227.000000 -6.000000C117.000000 -6.000000,117.000000 -109.000000,117.000000 -119.000000C117.000000 -146.000000,142.000000 -286.000000,183.000000 -346.000000C223.000000 -403.000000,272.000000 -435.000000,334.000000 -435.000000C443.000000 -435.000000,445.000000 -323.000000,445.000000 -303.000000C445.000000 -231.000000,381.000000 -6.000000,227.000000 -6.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_71">
      <path style="fill-rule: evenodd;" d="M760.000000 -695.000000C760.000000 -698.000000,758.000000 -705.000000,749.000000 -705.000000C746.000000 -705.000000,745.000000 -704.000000,734.000000 -693.000000L664.000000 -616.000000C655.000000 -630.000000,609.000000 -705.000000,498.000000 -705.000000C275.000000 -705.000000,50.000000 -484.000000,50.000000 -252.000000C50.000000 -93.000000,161.000000 22.000000,323.000000 22.000000C367.000000 22.000000,412.000000 13.000000,448.000000 -2.000000C498.000000 -22.000000,517.000000 -43.000000,535.000000 -63.000000C544.000000 -38.000000,570.000000 -1.000000,580.000000 -1.000000C585.000000 -1.000000,587.000000 -4.000000,587.000000 -5.000000C589.000000 -7.000000,599.000000 -45.000000,604.000000 -66.000000L623.000000 -143.000000C627.000000 -160.000000,632.000000 -177.000000,636.000000 -194.000000C647.000000 -239.000000,648.000000 -241.000000,705.000000 -242.000000C710.000000 -242.000000,721.000000 -243.000000,721.000000 -262.000000C721.000000 -269.000000,716.000000 -273.000000,708.000000 -273.000000L603.000000 -273.000000L685.000000 -273.000000L626.000000 -270.000000L603.000000 -270.000000L572.000000 -270.000000L494.000000 -273.000000L463.000000 -273.000000C454.000000 -273.000000,442.000000 -273.000000,442.000000 -253.000000C442.000000 -242.000000,450.000000 -242.000000,472.000000 -242.000000C473.000000 -242.000000,502.000000 -242.000000,525.000000 -240.000000C551.000000 -237.000000,556.000000 -234.000000,556.000000 -221.000000C556.000000 -212.000000,545.000000 -167.000000,535.000000 -130.000000C507.000000 -20.000000,377.000000 -9.000000,342.000000 -9.000000C246.000000 -9.000000,141.000000 -66.000000,141.000000 -219.000000C141.000000 -250.000000,151.000000 -415.000000,256.000000 -545.000000C310.000000 -613.000000,407.000000 -674.000000,506.000000 -674.000000C608.000000 -674.000000,667.000000 -597.000000,667.000000 -481.000000C667.000000 -441.000000,664.000000 -440.000000,664.000000 -430.000000C664.000000 -420.000000,675.000000 -420.000000,679.000000 -420.000000C692.000000 -420.000000,692.000000 -422.000000,697.000000 -440.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_102">
      <path style="fill-rule: evenodd;" d="M367.000000 -400.000000L453.000000 -400.000000C473.000000 -400.000000,483.000000 -400.000000,483.000000 -420.000000C483.000000 -431.000000,473.000000 -431.000000,456.000000 -431.000000L373.000000 -431.000000L394.000000 -545.000000C398.000000 -566.000000,412.000000 -637.000000,418.000000 -649.000000C427.000000 -668.000000,444.000000 -683.000000,465.000000 -683.000000C469.000000 -683.000000,495.000000 -683.000000,514.000000 -665.000000C470.000000 -661.000000,460.000000 -626.000000,460.000000 -611.000000C460.000000 -588.000000,478.000000 -576.000000,497.000000 -576.000000C523.000000 -576.000000,552.000000 -598.000000,552.000000 -636.000000C552.000000 -682.000000,506.000000 -705.000000,465.000000 -705.000000C431.000000 -705.000000,368.000000 -687.000000,338.000000 -588.000000C332.000000 -567.000000,329.000000 -557.000000,305.000000 -431.000000L236.000000 -431.000000C217.000000 -431.000000,206.000000 -431.000000,206.000000 -412.000000C206.000000 -400.000000,215.000000 -400.000000,234.000000 -400.000000L300.000000 -400.000000L225.000000 -5.000000C207.000000 92.000000,190.000000 183.000000,138.000000 183.000000C134.000000 183.000000,109.000000 183.000000,90.000000 165.000000C136.000000 162.000000,145.000000 126.000000,145.000000 111.000000C145.000000 88.000000,127.000000 76.000000,108.000000 76.000000C82.000000 76.000000,53.000000 98.000000,53.000000 136.000000C53.000000 181.000000,97.000000 205.000000,138.000000 205.000000C193.000000 205.000000,233.000000 146.000000,251.000000 108.000000C283.000000 45.000000,306.000000 -76.000000,307.000000 -83.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_120">
      <path style="fill-rule: evenodd;" d="M334.000000 -302.000000C340.000000 -328.000000,363.000000 -420.000000,433.000000 -420.000000C438.000000 -420.000000,462.000000 -420.000000,483.000000 -407.000000C455.000000 -402.000000,435.000000 -377.000000,435.000000 -353.000000C435.000000 -337.000000,446.000000 -318.000000,473.000000 -318.000000C495.000000 -318.000000,527.000000 -336.000000,527.000000 -376.000000C527.000000 -428.000000,468.000000 -442.000000,434.000000 -442.000000C376.000000 -442.000000,341.000000 -389.000000,329.000000 -366.000000C304.000000 -432.000000,250.000000 -442.000000,221.000000 -442.000000C117.000000 -442.000000,60.000000 -313.000000,60.000000 -288.000000C60.000000 -278.000000,70.000000 -278.000000,72.000000 -278.000000C80.000000 -278.000000,83.000000 -280.000000,85.000000 -289.000000C119.000000 -395.000000,185.000000 -420.000000,219.000000 -420.000000C238.000000 -420.000000,273.000000 -411.000000,273.000000 -353.000000C273.000000 -322.000000,256.000000 -255.000000,219.000000 -115.000000C203.000000 -53.000000,168.000000 -11.000000,124.000000 -11.000000C118.000000 -11.000000,95.000000 -11.000000,74.000000 -24.000000C99.000000 -29.000000,121.000000 -50.000000,121.000000 -78.000000C121.000000 -105.000000,99.000000 -113.000000,84.000000 -113.000000C54.000000 -113.000000,29.000000 -87.000000,29.000000 -55.000000C29.000000 -9.000000,79.000000 11.000000,123.000000 11.000000C189.000000 11.000000,225.000000 -59.000000,228.000000 -65.000000C240.000000 -28.000000,276.000000 11.000000,336.000000 11.000000C439.000000 11.000000,496.000000 -118.000000,496.000000 -143.000000C496.000000 -153.000000,487.000000 -153.000000,484.000000 -153.000000C475.000000 -153.000000,473.000000 -149.000000,471.000000 -142.000000C438.000000 -35.000000,370.000000 -11.000000,338.000000 -11.000000C299.000000 -11.000000,283.000000 -43.000000,283.000000 -77.000000C283.000000 -99.000000,289.000000 -121.000000,300.000000 -165.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_121">
      <path style="fill-rule: evenodd;" d="M486.000000 -381.000000C490.000000 -395.000000,490.000000 -397.000000,490.000000 -404.000000C490.000000 -422.000000,476.000000 -431.000000,461.000000 -431.000000C451.000000 -431.000000,435.000000 -425.000000,426.000000 -410.000000C424.000000 -405.000000,416.000000 -374.000000,412.000000 -356.000000C405.000000 -330.000000,398.000000 -303.000000,392.000000 -276.000000L347.000000 -96.000000C343.000000 -81.000000,300.000000 -11.000000,234.000000 -11.000000C183.000000 -11.000000,172.000000 -55.000000,172.000000 -92.000000C172.000000 -138.000000,189.000000 -200.000000,223.000000 -288.000000C239.000000 -329.000000,243.000000 -340.000000,243.000000 -360.000000C243.000000 -405.000000,211.000000 -442.000000,161.000000 -442.000000C66.000000 -442.000000,29.000000 -297.000000,29.000000 -288.000000C29.000000 -278.000000,39.000000 -278.000000,41.000000 -278.000000C51.000000 -278.000000,52.000000 -280.000000,57.000000 -296.000000C84.000000 -390.000000,124.000000 -420.000000,158.000000 -420.000000C166.000000 -420.000000,183.000000 -420.000000,183.000000 -388.000000C183.000000 -363.000000,173.000000 -337.000000,166.000000 -318.000000C126.000000 -212.000000,108.000000 -155.000000,108.000000 -108.000000C108.000000 -19.000000,171.000000 11.000000,230.000000 11.000000C269.000000 11.000000,303.000000 -6.000000,331.000000 -34.000000C318.000000 18.000000,306.000000 67.000000,266.000000 120.000000C240.000000 154.000000,202.000000 183.000000,156.000000 183.000000C142.000000 183.000000,97.000000 180.000000,80.000000 141.000000C96.000000 141.000000,109.000000 141.000000,123.000000 129.000000C133.000000 120.000000,143.000000 107.000000,143.000000 88.000000C143.000000 57.000000,116.000000 53.000000,106.000000 53.000000C83.000000 53.000000,50.000000 69.000000,50.000000 118.000000C50.000000 168.000000,94.000000 205.000000,156.000000 205.000000C259.000000 205.000000,362.000000 114.000000,390.000000 1.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmex10_18">
      <path style="fill-rule: evenodd;" d="M700.000000 2349.000000C700.000000 2345.000000,698.000000 2343.000000,696.000000 2340.000000C659.000000 2303.000000,592.000000 2236.000000,525.000000 2128.000000C364.000000 1870.000000,291.000000 1545.000000,291.000000 1160.000000C291.000000 891.000000,327.000000 544.000000,492.000000 246.000000C571.000000 104.000000,653.000000 22.000000,697.000000 -22.000000C700.000000 -25.000000,700.000000 -27.000000,700.000000 -30.000000C700.000000 -40.000000,693.000000 -40.000000,679.000000 -40.000000C665.000000 -40.000000,663.000000 -40.000000,648.000000 -25.000000C313.000000 280.000000,208.000000 738.000000,208.000000 1159.000000C208.000000 1552.000000,298.000000 1948.000000,552.000000 2247.000000C572.000000 2270.000000,610.000000 2311.000000,651.000000 2347.000000C663.000000 2359.000000,665.000000 2359.000000,679.000000 2359.000000C693.000000 2359.000000,700.000000 2359.000000,700.000000 2349.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmex10_19">
      <path style="fill-rule: evenodd;" d="M527.000000 1160.000000C527.000000 767.000000,437.000000 371.000000,183.000000 72.000000C163.000000 49.000000,125.000000 8.000000,84.000000 -28.000000C72.000000 -40.000000,70.000000 -40.000000,56.000000 -40.000000C44.000000 -40.000000,35.000000 -40.000000,35.000000 -30.000000C35.000000 -26.000000,39.000000 -22.000000,41.000000 -20.000000C76.000000 16.000000,143.000000 83.000000,210.000000 191.000000C371.000000 449.000000,444.000000 774.000000,444.000000 1159.000000C444.000000 1428.000000,408.000000 1775.000000,243.000000 2073.000000C164.000000 2215.000000,81.000000 2298.000000,39.000000 2340.000000C37.000000 2343.000000,35.000000 2346.000000,35.000000 2349.000000C35.000000 2359.000000,44.000000 2359.000000,56.000000 2359.000000C70.000000 2359.000000,72.000000 2359.000000,87.000000 2344.000000C422.000000 2039.000000,527.000000 1581.000000,527.000000 1160.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmex10_48">
      <path style="fill-rule: evenodd;" d="M374.000000 1770.000000C396.000000 1770.000000,402.000000 1770.000000,402.000000 1756.000000C404.000000 1055.000000,485.000000 473.000000,835.000000 -16.000000C842.000000 -25.000000,842.000000 -27.000000,842.000000 -29.000000C842.000000 -39.000000,835.000000 -39.000000,819.000000 -39.000000C803.000000 -39.000000,801.000000 -39.000000,799.000000 -37.000000C795.000000 -34.000000,668.000000 112.000000,567.000000 313.000000C435.000000 577.000000,352.000000 880.000000,315.000000 1244.000000C312.000000 1275.000000,291.000000 1483.000000,291.000000 1720.000000L291.000000 1759.000000C292.000000 1770.000000,298.000000 1770.000000,319.000000 1770.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmex10_49">
      <path style="fill-rule: evenodd;" d="M583.000000 1720.000000C583.000000 1109.000000,474.000000 751.000000,443.000000 650.000000C375.000000 428.000000,264.000000 194.000000,97.000000 -12.000000C82.000000 -30.000000,78.000000 -35.000000,74.000000 -37.000000C72.000000 -38.000000,71.000000 -39.000000,55.000000 -39.000000C40.000000 -39.000000,32.000000 -39.000000,32.000000 -29.000000C32.000000 -27.000000,32.000000 -25.000000,45.000000 -7.000000C393.000000 479.000000,471.000000 1079.000000,472.000000 1756.000000C472.000000 1770.000000,478.000000 1770.000000,500.000000 1770.000000L555.000000 1770.000000C576.000000 1770.000000,582.000000 1770.000000,583.000000 1759.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmex10_64">
      <path style="fill-rule: evenodd;" d="M319.000000 -50.000000C298.000000 -50.000000,292.000000 -50.000000,291.000000 -39.000000L291.000000 -0.000000C291.000000 611.000000,400.000000 969.000000,431.000000 1070.000000C499.000000 1292.000000,610.000000 1526.000000,777.000000 1732.000000C792.000000 1750.000000,796.000000 1755.000000,800.000000 1757.000000C802.000000 1758.000000,803.000000 1759.000000,819.000000 1759.000000C835.000000 1759.000000,842.000000 1759.000000,842.000000 1749.000000C842.000000 1747.000000,842.000000 1745.000000,836.000000 1736.000000C503.000000 1274.000000,403.000000 718.000000,402.000000 -36.000000C402.000000 -50.000000,396.000000 -50.000000,374.000000 -50.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmex10_65">
      <path style="fill-rule: evenodd;" d="M583.000000 -39.000000C582.000000 -50.000000,576.000000 -50.000000,555.000000 -50.000000L500.000000 -50.000000C478.000000 -50.000000,472.000000 -50.000000,472.000000 -36.000000C472.000000 67.000000,471.000000 305.000000,445.000000 554.000000C391.000000 1071.000000,258.000000 1429.000000,39.000000 1736.000000C32.000000 1745.000000,32.000000 1747.000000,32.000000 1749.000000C32.000000 1759.000000,40.000000 1759.000000,55.000000 1759.000000C71.000000 1759.000000,73.000000 1759.000000,75.000000 1757.000000C79.000000 1754.000000,206.000000 1608.000000,307.000000 1407.000000C439.000000 1143.000000,522.000000 840.000000,559.000000 476.000000C562.000000 445.000000,583.000000 237.000000,583.000000 -0.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmex10_66">
      <path style="fill-rule: evenodd;" d="M402.000000 17.000000C402.000000 -9.000000,401.000000 -10.000000,374.000000 -10.000000L319.000000 -10.000000C292.000000 -10.000000,291.000000 -9.000000,291.000000 17.000000L291.000000 583.000000C291.000000 609.000000,292.000000 610.000000,319.000000 610.000000L374.000000 610.000000C401.000000 610.000000,402.000000 609.000000,402.000000 583.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmex10_67">
      <path style="fill-rule: evenodd;" d="M583.000000 17.000000C583.000000 -9.000000,582.000000 -10.000000,555.000000 -10.000000L500.000000 -10.000000C473.000000 -10.000000,472.000000 -9.000000,472.000000 17.000000L472.000000 583.000000C472.000000 609.000000,473.000000 610.000000,500.000000 610.000000L555.000000 610.000000C582.000000 610.000000,583.000000 609.000000,583.000000 583.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmex10_88">
      <path style="fill-rule: evenodd;" d="M1266.000000 1400.000000L1387.000000 1080.000000L1362.000000 1080.000000C1323.000000 1184.000000,1217.000000 1252.000000,1102.000000 1282.000000C1081.000000 1287.000000,983.000000 1313.000000,791.000000 1313.000000L188.000000 1313.000000L697.000000 716.000000C704.000000 708.000000,706.000000 705.000000,706.000000 700.000000C706.000000 698.000000,706.000000 695.000000,699.000000 685.000000L233.000000 48.000000L781.000000 48.000000C915.000000 48.000000,1006.000000 62.000000,1015.000000 64.000000C1069.000000 72.000000,1156.000000 89.000000,1235.000000 139.000000C1260.000000 155.000000,1328.000000 200.000000,1362.000000 281.000000L1387.000000 281.000000L1266.000000 -0.000000L84.000000 -0.000000C61.000000 -0.000000,60.000000 1.000000,57.000000 7.000000C56.000000 10.000000,56.000000 29.000000,56.000000 40.000000L585.000000 764.000000L67.000000 1371.000000C57.000000 1383.000000,57.000000 1388.000000,57.000000 1389.000000C57.000000 1400.000000,66.000000 1400.000000,84.000000 1400.000000"></path>
    </g>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmr7_49">
      <path style="fill-rule: evenodd;" d="M335.000000 -636.000000C335.000000 -663.000000,333.000000 -664.000000,305.000000 -664.000000C241.000000 -601.000000,150.000000 -600.000000,109.000000 -600.000000L109.000000 -564.000000C133.000000 -564.000000,199.000000 -564.000000,254.000000 -592.000000L254.000000 -82.000000C254.000000 -49.000000,254.000000 -36.000000,154.000000 -36.000000L116.000000 -36.000000L116.000000 -0.000000L294.000000 -0.000000L134.000000 -1.000000L257.000000 -4.000000L294.000000 -4.000000L325.000000 -4.000000L451.000000 -1.000000L473.000000 -0.000000L473.000000 -36.000000L435.000000 -36.000000C335.000000 -36.000000,335.000000 -49.000000,335.000000 -82.000000"></path>
    </g>
    <g transform="scale(0.006974,0.006974)" id="GLYPHcmr7_61">
      <path style="fill-rule: evenodd;" d="M768.000000 -336.000000C783.000000 -336.000000,806.000000 -336.000000,806.000000 -361.000000C806.000000 -385.000000,782.000000 -385.000000,769.000000 -385.000000L107.000000 -385.000000C94.000000 -385.000000,70.000000 -385.000000,70.000000 -361.000000C70.000000 -336.000000,93.000000 -336.000000,108.000000 -336.000000M769.000000 -116.000000C782.000000 -116.000000,806.000000 -116.000000,806.000000 -140.000000C806.000000 -165.000000,783.000000 -165.000000,768.000000 -165.000000L108.000000 -165.000000C93.000000 -165.000000,70.000000 -165.000000,70.000000 -140.000000C70.000000 -116.000000,94.000000 -116.000000,107.000000 -116.000000"></path>
    </g>
  </defs>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,0.928970 50.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_71"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,17.889679 50.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_61"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,34.715500 28.508957)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_18"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,54.419586 41.075562)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_102"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,63.939438 35.290894)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_84"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,62.223755 45.016220)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_120"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,73.981400 41.075562)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_102"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,81.785431 43.466461)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_120"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,105.751297 41.075562)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_102"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,115.271149 35.290894)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_84"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,113.555328 45.016220)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_120"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,125.312958 41.075562)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_102"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,133.117142 43.466461)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_121"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,54.601349 60.223480)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_102"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,64.121201 54.438812)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_84"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,62.405380 64.164124)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_120"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,74.163010 60.223480)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_102"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,81.967194 62.614532)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_121"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,105.751297 60.223480)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_102"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,115.271149 54.438812)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_84"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,113.555328 64.164124)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_121"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,125.312958 60.223480)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_102"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,133.117142 62.614532)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_121"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,148.749390 28.508957)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_19"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,164.911041 50.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_61"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,181.736862 4.598328)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_48"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,181.736862 32.653610)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_66"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,181.736862 42.217804)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_66"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,181.736862 51.782166)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_66"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,181.736862 61.983963)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_64"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,211.227203 6.673203)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_110"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,203.654694 11.455139)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_88"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,204.842392 45.405991)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_105"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,209.352325 45.405991)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr7_61"></use>
    <use xlink:href="#GLYPHcmr7_49" x="6.139011"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,231.249039 15.814850)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_64"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,240.597412 15.814850)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_102"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,248.401596 18.205887)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_105"></use>
  </g>
  <path d="M231.249039 22.613434L253.708496 22.613434" style="stroke:rgb(0.000000%,0.000000%,0.000000%); stroke-width: 0.637604;stroke-linejoin: round;stroke-miterlimit: 10.000000;fill: none;"></path>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,233.249527 37.532852)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_64"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,242.597885 37.532852)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_120"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,257.534103 15.814850)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_64"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,266.882477 15.814850)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_102"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,274.686661 18.205887)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_105"></use>
  </g>
  <path d="M257.534103 22.613434L279.993561 22.613434" style="stroke:rgb(0.000000%,0.000000%,0.000000%); stroke-width: 0.637604;stroke-linejoin: round;stroke-miterlimit: 10.000000;fill: none;"></path>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,259.534592 37.532852)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_64"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,268.882950 37.532852)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_120"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,305.419250 6.673203)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_110"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,297.846756 11.455139)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_88"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,299.034424 45.405991)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_105"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,303.544357 45.405991)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr7_61"></use>
    <use xlink:href="#GLYPHcmr7_49" x="6.139011"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,325.441101 15.814850)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_64"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,334.789444 15.814850)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_102"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,342.593475 18.205887)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_105"></use>
  </g>
  <path d="M325.441101 22.613434L347.900528 22.613434" style="stroke:rgb(0.000000%,0.000000%,0.000000%); stroke-width: 0.637604;stroke-linejoin: round;stroke-miterlimit: 10.000000;fill: none;"></path>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,327.441574 37.532852)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_64"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,336.789780 37.532852)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_120"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,351.726151 15.814850)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_64"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,361.074509 15.814850)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_102"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,368.878693 18.205887)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_105"></use>
  </g>
  <path d="M351.726151 22.613434L374.185593 22.613434" style="stroke:rgb(0.000000%,0.000000%,0.000000%); stroke-width: 0.637604;stroke-linejoin: round;stroke-miterlimit: 10.000000;fill: none;"></path>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,354.088226 37.532852)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_64"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,363.436432 37.532852)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_121"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,211.227203 53.398163)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_110"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,203.654694 58.180267)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_88"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,204.842392 92.130951)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_105"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,209.352325 92.130951)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr7_61"></use>
    <use xlink:href="#GLYPHcmr7_49" x="6.139011"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,231.249039 62.539978)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_64"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,240.597412 62.539978)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_102"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,248.401596 64.931015)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_105"></use>
  </g>
  <path d="M231.249039 69.338562L253.708496 69.338562" style="stroke:rgb(0.000000%,0.000000%,0.000000%); stroke-width: 0.637604;stroke-linejoin: round;stroke-miterlimit: 10.000000;fill: none;"></path>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,233.249527 84.257812)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_64"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,242.597885 84.257812)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_120"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,257.534103 62.539978)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_64"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,266.882477 62.539978)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_102"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,274.686661 64.931015)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_105"></use>
  </g>
  <path d="M257.534103 69.338562L279.993561 69.338562" style="stroke:rgb(0.000000%,0.000000%,0.000000%); stroke-width: 0.637604;stroke-linejoin: round;stroke-miterlimit: 10.000000;fill: none;"></path>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,259.896194 84.257812)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_64"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,269.244537 84.257812)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_121"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,305.419250 53.398163)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_110"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,297.846756 58.180267)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_88"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,299.034424 92.130951)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_105"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,303.544357 92.130951)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr7_61"></use>
    <use xlink:href="#GLYPHcmr7_49" x="6.139011"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,325.441101 62.539978)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_64"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,334.789444 62.539978)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_102"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,342.593475 64.931015)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_105"></use>
  </g>
  <path d="M325.441101 69.338562L347.900528 69.338562" style="stroke:rgb(0.000000%,0.000000%,0.000000%); stroke-width: 0.637604;stroke-linejoin: round;stroke-miterlimit: 10.000000;fill: none;"></path>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,327.803162 84.257812)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_64"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,337.151367 84.257812)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_121"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,351.726151 62.539978)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_64"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,361.074509 62.539978)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_102"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,368.878693 64.931015)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi7_105"></use>
  </g>
  <path d="M351.726151 69.338562L374.185593 69.338562" style="stroke:rgb(0.000000%,0.000000%,0.000000%); stroke-width: 0.637604;stroke-linejoin: round;stroke-miterlimit: 10.000000;fill: none;"></path>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,354.088226 84.257812)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_64"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,363.436432 84.257812)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_121"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,384.068512 4.598328)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_49"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,384.068512 32.653610)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_67"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,384.068512 42.217804)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_67"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,384.068512 51.782166)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_67"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,384.068512 61.983963)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_65"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,408.643173 50.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_58"></use>
  </g>
</svg></span>
The partial derivatives of the images, which are necessary to
calculate the metric tensor, are calculated with the corresponding
edge filters, analogously to <a href="edges_image.html"><code><span data-if="hdevelop" style="display:inline">edges_image</span><span data-if="c" style="display:none">edges_image</span><span data-if="cpp" style="display:none">EdgesImage</span><span data-if="com" style="display:none">EdgesImage</span><span data-if="dotnet" style="display:none">EdgesImage</span><span data-if="python" style="display:none">edges_image</span></code></a>.  For
<a href="#Filter"><i><code><span data-if="hdevelop" style="display:inline">Filter</span><span data-if="c" style="display:none">Filter</span><span data-if="cpp" style="display:none">Filter</span><span data-if="com" style="display:none">Filter</span><span data-if="dotnet" style="display:none">filter</span><span data-if="python" style="display:none">filter</span></code></i></a> = <i><span data-if="hdevelop" style="display:inline">'canny'</span><span data-if="c" style="display:none">"canny"</span><span data-if="cpp" style="display:none">"canny"</span><span data-if="com" style="display:none">"canny"</span><span data-if="dotnet" style="display:none">"canny"</span><span data-if="python" style="display:none">"canny"</span></i>, the partial derivatives of the
Gaussian smoothing masks are used (see <a href="derivate_gauss.html"><code><span data-if="hdevelop" style="display:inline">derivate_gauss</span><span data-if="c" style="display:none">derivate_gauss</span><span data-if="cpp" style="display:none">DerivateGauss</span><span data-if="com" style="display:none">DerivateGauss</span><span data-if="dotnet" style="display:none">DerivateGauss</span><span data-if="python" style="display:none">derivate_gauss</span></code></a>), for
<i><span data-if="hdevelop" style="display:inline">'deriche1'</span><span data-if="c" style="display:none">"deriche1"</span><span data-if="cpp" style="display:none">"deriche1"</span><span data-if="com" style="display:none">"deriche1"</span><span data-if="dotnet" style="display:none">"deriche1"</span><span data-if="python" style="display:none">"deriche1"</span></i> and <a href="#Filter"><i><code><span data-if="hdevelop" style="display:inline">Filter</span><span data-if="c" style="display:none">Filter</span><span data-if="cpp" style="display:none">Filter</span><span data-if="com" style="display:none">Filter</span><span data-if="dotnet" style="display:none">filter</span><span data-if="python" style="display:none">filter</span></code></i></a> = <i><span data-if="hdevelop" style="display:inline">'deriche2'</span><span data-if="c" style="display:none">"deriche2"</span><span data-if="cpp" style="display:none">"deriche2"</span><span data-if="com" style="display:none">"deriche2"</span><span data-if="dotnet" style="display:none">"deriche2"</span><span data-if="python" style="display:none">"deriche2"</span></i> the
corresponding Deriche filters, for <a href="#Filter"><i><code><span data-if="hdevelop" style="display:inline">Filter</span><span data-if="c" style="display:none">Filter</span><span data-if="cpp" style="display:none">Filter</span><span data-if="com" style="display:none">Filter</span><span data-if="dotnet" style="display:none">filter</span><span data-if="python" style="display:none">filter</span></code></i></a> = <i><span data-if="hdevelop" style="display:inline">'shen'</span><span data-if="c" style="display:none">"shen"</span><span data-if="cpp" style="display:none">"shen"</span><span data-if="com" style="display:none">"shen"</span><span data-if="dotnet" style="display:none">"shen"</span><span data-if="python" style="display:none">"shen"</span></i>
the corresponding Shen filters, and for <a href="#Filter"><i><code><span data-if="hdevelop" style="display:inline">Filter</span><span data-if="c" style="display:none">Filter</span><span data-if="cpp" style="display:none">Filter</span><span data-if="com" style="display:none">Filter</span><span data-if="dotnet" style="display:none">filter</span><span data-if="python" style="display:none">filter</span></code></i></a> =
<i><span data-if="hdevelop" style="display:inline">'sobel_fast'</span><span data-if="c" style="display:none">"sobel_fast"</span><span data-if="cpp" style="display:none">"sobel_fast"</span><span data-if="com" style="display:none">"sobel_fast"</span><span data-if="dotnet" style="display:none">"sobel_fast"</span><span data-if="python" style="display:none">"sobel_fast"</span></i> the Sobel filter.  Analogously to
single-channel images, the gradient direction is defined by the
vector v in which the rate of change f is maximum.
The vector v is given by the eigenvector corresponding to
the largest eigenvalue of G.  The square root of the
eigenvalue is the equivalent of the gradient magnitude (the
amplitude) for single-channel images, and is returned in
<a href="#ImaAmp"><i><code><span data-if="hdevelop" style="display:inline">ImaAmp</span><span data-if="c" style="display:none">ImaAmp</span><span data-if="cpp" style="display:none">ImaAmp</span><span data-if="com" style="display:none">ImaAmp</span><span data-if="dotnet" style="display:none">imaAmp</span><span data-if="python" style="display:none">ima_amp</span></code></i></a>.  For single-channel images, both definitions are
equivalent.  Since the gradient magnitude may be larger than what
can be represented in the input image data type (byte or uint2), it
is stored in the next larger data type (uint2 or int4) in
<a href="#ImaAmp"><i><code><span data-if="hdevelop" style="display:inline">ImaAmp</span><span data-if="c" style="display:none">ImaAmp</span><span data-if="cpp" style="display:none">ImaAmp</span><span data-if="com" style="display:none">ImaAmp</span><span data-if="dotnet" style="display:none">imaAmp</span><span data-if="python" style="display:none">ima_amp</span></code></i></a>.  The eigenvector also is used to define the edge
direction.  In contrast to single-channel images, the edge direction
can only be defined modulo 180 degrees.  Like in the output of
<a href="edges_image.html"><code><span data-if="hdevelop" style="display:inline">edges_image</span><span data-if="c" style="display:none">edges_image</span><span data-if="cpp" style="display:none">EdgesImage</span><span data-if="com" style="display:none">EdgesImage</span><span data-if="dotnet" style="display:none">EdgesImage</span><span data-if="python" style="display:none">edges_image</span></code></a>, the edge directions are stored in 2-degree
steps, and are returned in <a href="#ImaDir"><i><code><span data-if="hdevelop" style="display:inline">ImaDir</span><span data-if="c" style="display:none">ImaDir</span><span data-if="cpp" style="display:none">ImaDir</span><span data-if="com" style="display:none">ImaDir</span><span data-if="dotnet" style="display:none">imaDir</span><span data-if="python" style="display:none">ima_dir</span></code></i></a>.  Points with edge
amplitude 0 are assigned the edge direction 255 (undefined
direction).  For speed reasons, the edge directions are not computed
explicitly for <a href="#Filter"><i><code><span data-if="hdevelop" style="display:inline">Filter</span><span data-if="c" style="display:none">Filter</span><span data-if="cpp" style="display:none">Filter</span><span data-if="com" style="display:none">Filter</span><span data-if="dotnet" style="display:none">filter</span><span data-if="python" style="display:none">filter</span></code></i></a> = <i><span data-if="hdevelop" style="display:inline">'sobel_fast'</span><span data-if="c" style="display:none">"sobel_fast"</span><span data-if="cpp" style="display:none">"sobel_fast"</span><span data-if="com" style="display:none">"sobel_fast"</span><span data-if="dotnet" style="display:none">"sobel_fast"</span><span data-if="python" style="display:none">"sobel_fast"</span></i>.  Therefore,
<a href="#ImaDir"><i><code><span data-if="hdevelop" style="display:inline">ImaDir</span><span data-if="c" style="display:none">ImaDir</span><span data-if="cpp" style="display:none">ImaDir</span><span data-if="com" style="display:none">ImaDir</span><span data-if="dotnet" style="display:none">imaDir</span><span data-if="python" style="display:none">ima_dir</span></code></i></a> is an empty object in this case.
</p>
<p>The “filter width” (i.e., the amount of smoothing) can be chosen
arbitrarily for all filters except <i><span data-if="hdevelop" style="display:inline">'sobel_fast'</span><span data-if="c" style="display:none">"sobel_fast"</span><span data-if="cpp" style="display:none">"sobel_fast"</span><span data-if="com" style="display:none">"sobel_fast"</span><span data-if="dotnet" style="display:none">"sobel_fast"</span><span data-if="python" style="display:none">"sobel_fast"</span></i> (where the
filter width is 3x3 and <a href="#Alpha"><i><code><span data-if="hdevelop" style="display:inline">Alpha</span><span data-if="c" style="display:none">Alpha</span><span data-if="cpp" style="display:none">Alpha</span><span data-if="com" style="display:none">Alpha</span><span data-if="dotnet" style="display:none">alpha</span><span data-if="python" style="display:none">alpha</span></code></i></a> is
ignored), and can be estimated by calling <a href="info_edges.html"><code><span data-if="hdevelop" style="display:inline">info_edges</span><span data-if="c" style="display:none">info_edges</span><span data-if="cpp" style="display:none">InfoEdges</span><span data-if="com" style="display:none">InfoEdges</span><span data-if="dotnet" style="display:none">InfoEdges</span><span data-if="python" style="display:none">info_edges</span></code></a> for
concrete values of the parameter <a href="#Alpha"><i><code><span data-if="hdevelop" style="display:inline">Alpha</span><span data-if="c" style="display:none">Alpha</span><span data-if="cpp" style="display:none">Alpha</span><span data-if="com" style="display:none">Alpha</span><span data-if="dotnet" style="display:none">alpha</span><span data-if="python" style="display:none">alpha</span></code></i></a>.  It decreases for
increasing <a href="#Alpha"><i><code><span data-if="hdevelop" style="display:inline">Alpha</span><span data-if="c" style="display:none">Alpha</span><span data-if="cpp" style="display:none">Alpha</span><span data-if="com" style="display:none">Alpha</span><span data-if="dotnet" style="display:none">alpha</span><span data-if="python" style="display:none">alpha</span></code></i></a> for the Deriche and Shen filters and
increases for the Canny filter, where it is the standard deviation
of the Gaussian on which the Canny operator is based.  “Wide”
filters exhibit a larger invariance to noise, but also a decreased
ability to detect small details.  Non-recursive filters, such as the
Canny filter, are realized using filter masks, and thus the
execution time increases for increasing filter width.  In contrast,
the execution time for recursive filters does not depend on the
filter width.  Thus, arbitrary filter widths are possible using the
Deriche and Shen filters without increasing the run time of the
operator.  The resulting advantage in speed compared to the Canny
operator naturally increases for larger filter widths.  As border
treatment, the recursive operators assume that the images are zero
outside of the image, while the Canny operator mirrors the gray
value at the image border.  The signal-noise-ratio of the filters is
comparable for the following choices of <a href="#Alpha"><i><code><span data-if="hdevelop" style="display:inline">Alpha</span><span data-if="c" style="display:none">Alpha</span><span data-if="cpp" style="display:none">Alpha</span><span data-if="com" style="display:none">Alpha</span><span data-if="dotnet" style="display:none">alpha</span><span data-if="python" style="display:none">alpha</span></code></i></a>:
<span class="pre">
     Alpha('deriche2')  = Alpha('deriche1') / 2,
     Alpha('shen')      = Alpha('deriche1') / 2,
     Alpha('canny')     = 1.77 / Alpha('deriche1').
</span>
</p>
<code><span data-if="hdevelop" style="display:inline">edges_color</span><span data-if="c" style="display:none">edges_color</span><span data-if="cpp" style="display:none">EdgesColor</span><span data-if="com" style="display:none">EdgesColor</span><span data-if="dotnet" style="display:none">EdgesColor</span><span data-if="python" style="display:none">edges_color</span></code> optionally offers to apply a
non-maximum-suppression (<a href="#NMS"><i><code><span data-if="hdevelop" style="display:inline">NMS</span><span data-if="c" style="display:none">NMS</span><span data-if="cpp" style="display:none">NMS</span><span data-if="com" style="display:none">NMS</span><span data-if="dotnet" style="display:none">NMS</span><span data-if="python" style="display:none">nms</span></code></i></a> =
<i><span data-if="hdevelop" style="display:inline">'nms'</span><span data-if="c" style="display:none">"nms"</span><span data-if="cpp" style="display:none">"nms"</span><span data-if="com" style="display:none">"nms"</span><span data-if="dotnet" style="display:none">"nms"</span><span data-if="python" style="display:none">"nms"</span></i>/<i><span data-if="hdevelop" style="display:inline">'inms'</span><span data-if="c" style="display:none">"inms"</span><span data-if="cpp" style="display:none">"inms"</span><span data-if="com" style="display:none">"inms"</span><span data-if="dotnet" style="display:none">"inms"</span><span data-if="python" style="display:none">"inms"</span></i>/<i><span data-if="hdevelop" style="display:inline">'hvnms'</span><span data-if="c" style="display:none">"hvnms"</span><span data-if="cpp" style="display:none">"hvnms"</span><span data-if="com" style="display:none">"hvnms"</span><span data-if="dotnet" style="display:none">"hvnms"</span><span data-if="python" style="display:none">"hvnms"</span></i>; <i><span data-if="hdevelop" style="display:inline">'none'</span><span data-if="c" style="display:none">"none"</span><span data-if="cpp" style="display:none">"none"</span><span data-if="com" style="display:none">"none"</span><span data-if="dotnet" style="display:none">"none"</span><span data-if="python" style="display:none">"none"</span></i> if
not desired) and hysteresis threshold operation
(<a href="#Low"><i><code><span data-if="hdevelop" style="display:inline">Low</span><span data-if="c" style="display:none">Low</span><span data-if="cpp" style="display:none">Low</span><span data-if="com" style="display:none">Low</span><span data-if="dotnet" style="display:none">low</span><span data-if="python" style="display:none">low</span></code></i></a>,<a href="#High"><i><code><span data-if="hdevelop" style="display:inline">High</span><span data-if="c" style="display:none">High</span><span data-if="cpp" style="display:none">High</span><span data-if="com" style="display:none">High</span><span data-if="dotnet" style="display:none">high</span><span data-if="python" style="display:none">high</span></code></i></a>; at least one negative if not desired)
to the resulting edge image.  Conceptually, this corresponds to the
following calls:
<div style="text-align:center"><table style="width:90%;margin-left:auto;margin-right:auto" class="layout">
<col span="1" style="width:90%;">
<tr><td style="text-align:left">
<a href="nonmax_suppression_dir.html"><code><span data-if="hdevelop" style="display:inline">nonmax_suppression_dir(...,NMS,...)</span><span data-if="c" style="display:none">nonmax_suppression_dir(...,NMS,...)</span><span data-if="cpp" style="display:none">NonmaxSuppressionDir(...,NMS,...)</span><span data-if="com" style="display:none">NonmaxSuppressionDir(...,NMS,...)</span><span data-if="dotnet" style="display:none">NonmaxSuppressionDir(...,NMS,...)</span><span data-if="python" style="display:none">nonmax_suppression_dir(...,NMS,...)</span></code></a>
</td></tr>
<tr><td style="text-align:left">
<a href="hysteresis_threshold.html"><code><span data-if="hdevelop" style="display:inline">hysteresis_threshold(...,Low,High,1000,...)</span><span data-if="c" style="display:none">hysteresis_threshold(...,Low,High,1000,...)</span><span data-if="cpp" style="display:none">HysteresisThreshold(...,Low,High,1000,...)</span><span data-if="com" style="display:none">HysteresisThreshold(...,Low,High,1000,...)</span><span data-if="dotnet" style="display:none">HysteresisThreshold(...,Low,High,1000,...)</span><span data-if="python" style="display:none">hysteresis_threshold(...,Low,High,1000,...)</span></code></a>.
</td></tr>
</table></div>
<p>Note that the hysteresis threshold operation is not applied if
<a href="#NMS"><i><code><span data-if="hdevelop" style="display:inline">NMS</span><span data-if="c" style="display:none">NMS</span><span data-if="cpp" style="display:none">NMS</span><span data-if="com" style="display:none">NMS</span><span data-if="dotnet" style="display:none">NMS</span><span data-if="python" style="display:none">nms</span></code></i></a> is set to <i><span data-if="hdevelop" style="display:inline">'none'</span><span data-if="c" style="display:none">"none"</span><span data-if="cpp" style="display:none">"none"</span><span data-if="com" style="display:none">"none"</span><span data-if="dotnet" style="display:none">"none"</span><span data-if="python" style="display:none">"none"</span></i>.
</p>
<p>For <i><span data-if="hdevelop" style="display:inline">'sobel_fast'</span><span data-if="c" style="display:none">"sobel_fast"</span><span data-if="cpp" style="display:none">"sobel_fast"</span><span data-if="com" style="display:none">"sobel_fast"</span><span data-if="dotnet" style="display:none">"sobel_fast"</span><span data-if="python" style="display:none">"sobel_fast"</span></i>, the same non-maximum-suppression is
performed for all values of <a href="#NMS"><i><code><span data-if="hdevelop" style="display:inline">NMS</span><span data-if="c" style="display:none">NMS</span><span data-if="cpp" style="display:none">NMS</span><span data-if="com" style="display:none">NMS</span><span data-if="dotnet" style="display:none">NMS</span><span data-if="python" style="display:none">nms</span></code></i></a> except <i><span data-if="hdevelop" style="display:inline">'none'</span><span data-if="c" style="display:none">"none"</span><span data-if="cpp" style="display:none">"none"</span><span data-if="com" style="display:none">"none"</span><span data-if="dotnet" style="display:none">"none"</span><span data-if="python" style="display:none">"none"</span></i>.
Additionally, for <i><span data-if="hdevelop" style="display:inline">'sobel_fast'</span><span data-if="c" style="display:none">"sobel_fast"</span><span data-if="cpp" style="display:none">"sobel_fast"</span><span data-if="com" style="display:none">"sobel_fast"</span><span data-if="dotnet" style="display:none">"sobel_fast"</span><span data-if="python" style="display:none">"sobel_fast"</span></i> the resulting edges are
thinned to a width of one pixel.</p>
<h2 id="sec_attention">注意</h2>
<p>Note that filter operators may return unexpected results if
an image with a reduced domain is used as input. Please refer to the
chapter <a href="toc_filters.html">过滤器</a>.</p>
<h2 id="sec_execution">运行信息</h2>
<ul>
  <li>多线程类型:可重入(与非独占操作符并行运行)。</li>
<li>多线程作用域:全局(可以从任何线程调用)。</li>
  
    <li>在元组级别自动并行化。</li>
    <li>Automatically parallelized on internal data level.</li>
  
</ul>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="Image" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Image</span><span data-if="c" style="display:none">Image</span><span data-if="cpp" style="display:none">Image</span><span data-if="com" style="display:none">Image</span><span data-if="dotnet" style="display:none">image</span><span data-if="python" style="display:none">image</span></code></b> (input_object)  </span><span>(multichannel-)image(-array) <code>→</code> <span data-if="hdevelop" style="display:inline">object</span><span data-if="dotnet" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="python" style="display:none">HObject</span><span data-if="cpp" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="c" style="display:none">Hobject</span> (byte / uint2)</span>
</div>
<p class="pardesc">Input image.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="ImaAmp" class="parname"><b><code><span data-if="hdevelop" style="display:inline">ImaAmp</span><span data-if="c" style="display:none">ImaAmp</span><span data-if="cpp" style="display:none">ImaAmp</span><span data-if="com" style="display:none">ImaAmp</span><span data-if="dotnet" style="display:none">imaAmp</span><span data-if="python" style="display:none">ima_amp</span></code></b> (output_object)  </span><span>singlechannelimage(-array) <code>→</code> <span data-if="hdevelop" style="display:inline">object</span><span data-if="dotnet" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="python" style="display:none">HObject</span><span data-if="cpp" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="c" style="display:none">Hobject *</span> (uint2 / int4)</span>
</div>
<p class="pardesc">Edge amplitude (gradient magnitude) image.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="ImaDir" class="parname"><b><code><span data-if="hdevelop" style="display:inline">ImaDir</span><span data-if="c" style="display:none">ImaDir</span><span data-if="cpp" style="display:none">ImaDir</span><span data-if="com" style="display:none">ImaDir</span><span data-if="dotnet" style="display:none">imaDir</span><span data-if="python" style="display:none">ima_dir</span></code></b> (output_object)  </span><span>singlechannelimage(-array) <code>→</code> <span data-if="hdevelop" style="display:inline">object</span><span data-if="dotnet" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="python" style="display:none">HObject</span><span data-if="cpp" style="display:none"><a href="HImage.html">HImage</a></span><span data-if="c" style="display:none">Hobject *</span> (direction)</span>
</div>
<p class="pardesc">Edge direction image.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="Filter" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Filter</span><span data-if="c" style="display:none">Filter</span><span data-if="cpp" style="display:none">Filter</span><span data-if="com" style="display:none">Filter</span><span data-if="dotnet" style="display:none">filter</span><span data-if="python" style="display:none">filter</span></code></b> (input_control)  </span><span>string <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">str</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string)</span><span data-if="dotnet" style="display:none"> (<i>string</i>)</span><span data-if="cpp" style="display:none"> (<i>HString</i>)</span><span data-if="c" style="display:none"> (<i>char*</i>)</span></span>
</div>
<p class="pardesc">Edge operator to be applied.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>
    <span data-if="hdevelop" style="display:inline">'canny'</span>
    <span data-if="c" style="display:none">"canny"</span>
    <span data-if="cpp" style="display:none">"canny"</span>
    <span data-if="com" style="display:none">"canny"</span>
    <span data-if="dotnet" style="display:none">"canny"</span>
    <span data-if="python" style="display:none">"canny"</span>
</p>
<p class="pardesc"><span class="parcat">List of values:
      </span><span data-if="hdevelop" style="display:inline">'canny'</span><span data-if="c" style="display:none">"canny"</span><span data-if="cpp" style="display:none">"canny"</span><span data-if="com" style="display:none">"canny"</span><span data-if="dotnet" style="display:none">"canny"</span><span data-if="python" style="display:none">"canny"</span>, <span data-if="hdevelop" style="display:inline">'deriche1'</span><span data-if="c" style="display:none">"deriche1"</span><span data-if="cpp" style="display:none">"deriche1"</span><span data-if="com" style="display:none">"deriche1"</span><span data-if="dotnet" style="display:none">"deriche1"</span><span data-if="python" style="display:none">"deriche1"</span>, <span data-if="hdevelop" style="display:inline">'deriche2'</span><span data-if="c" style="display:none">"deriche2"</span><span data-if="cpp" style="display:none">"deriche2"</span><span data-if="com" style="display:none">"deriche2"</span><span data-if="dotnet" style="display:none">"deriche2"</span><span data-if="python" style="display:none">"deriche2"</span>, <span data-if="hdevelop" style="display:inline">'shen'</span><span data-if="c" style="display:none">"shen"</span><span data-if="cpp" style="display:none">"shen"</span><span data-if="com" style="display:none">"shen"</span><span data-if="dotnet" style="display:none">"shen"</span><span data-if="python" style="display:none">"shen"</span>, <span data-if="hdevelop" style="display:inline">'sobel_fast'</span><span data-if="c" style="display:none">"sobel_fast"</span><span data-if="cpp" style="display:none">"sobel_fast"</span><span data-if="com" style="display:none">"sobel_fast"</span><span data-if="dotnet" style="display:none">"sobel_fast"</span><span data-if="python" style="display:none">"sobel_fast"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="Alpha" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Alpha</span><span data-if="c" style="display:none">Alpha</span><span data-if="cpp" style="display:none">Alpha</span><span data-if="com" style="display:none">Alpha</span><span data-if="dotnet" style="display:none">alpha</span><span data-if="python" style="display:none">alpha</span></code></b> (input_control)  </span><span>real <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">float</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Filter parameter: small values result in strong
smoothing, and thus less detail (opposite for
'canny').</p>
<p class="pardesc"><span class="parcat">Default:
      </span>1.0</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>0.1, 0.2, 0.3, 0.4, 0.5, 0.7, 0.9, 1.0, 1.1, 1.2, 1.5, 2.0, 2.5, 3.0</p>
<p class="pardesc"><span class="parcat">Minimum increment:
      </span>0.01</p>
<p class="pardesc"><span class="parcat">Recommended increment:
      </span>0.1</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>Alpha &gt; 0.0</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="NMS" class="parname"><b><code><span data-if="hdevelop" style="display:inline">NMS</span><span data-if="c" style="display:none">NMS</span><span data-if="cpp" style="display:none">NMS</span><span data-if="com" style="display:none">NMS</span><span data-if="dotnet" style="display:none">NMS</span><span data-if="python" style="display:none">nms</span></code></b> (input_control)  </span><span>string <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">str</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string)</span><span data-if="dotnet" style="display:none"> (<i>string</i>)</span><span data-if="cpp" style="display:none"> (<i>HString</i>)</span><span data-if="c" style="display:none"> (<i>char*</i>)</span></span>
</div>
<p class="pardesc">Non-maximum suppression ('none', if not desired).</p>
<p class="pardesc"><span class="parcat">Default:
      </span>
    <span data-if="hdevelop" style="display:inline">'nms'</span>
    <span data-if="c" style="display:none">"nms"</span>
    <span data-if="cpp" style="display:none">"nms"</span>
    <span data-if="com" style="display:none">"nms"</span>
    <span data-if="dotnet" style="display:none">"nms"</span>
    <span data-if="python" style="display:none">"nms"</span>
</p>
<p class="pardesc"><span class="parcat">List of values:
      </span><span data-if="hdevelop" style="display:inline">'hvnms'</span><span data-if="c" style="display:none">"hvnms"</span><span data-if="cpp" style="display:none">"hvnms"</span><span data-if="com" style="display:none">"hvnms"</span><span data-if="dotnet" style="display:none">"hvnms"</span><span data-if="python" style="display:none">"hvnms"</span>, <span data-if="hdevelop" style="display:inline">'inms'</span><span data-if="c" style="display:none">"inms"</span><span data-if="cpp" style="display:none">"inms"</span><span data-if="com" style="display:none">"inms"</span><span data-if="dotnet" style="display:none">"inms"</span><span data-if="python" style="display:none">"inms"</span>, <span data-if="hdevelop" style="display:inline">'nms'</span><span data-if="c" style="display:none">"nms"</span><span data-if="cpp" style="display:none">"nms"</span><span data-if="com" style="display:none">"nms"</span><span data-if="dotnet" style="display:none">"nms"</span><span data-if="python" style="display:none">"nms"</span>, <span data-if="hdevelop" style="display:inline">'none'</span><span data-if="c" style="display:none">"none"</span><span data-if="cpp" style="display:none">"none"</span><span data-if="com" style="display:none">"none"</span><span data-if="dotnet" style="display:none">"none"</span><span data-if="python" style="display:none">"none"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="Low" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Low</span><span data-if="c" style="display:none">Low</span><span data-if="cpp" style="display:none">Low</span><span data-if="com" style="display:none">Low</span><span data-if="dotnet" style="display:none">low</span><span data-if="python" style="display:none">low</span></code></b> (input_control)  </span><span>integer <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">int</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (integer)</span><span data-if="dotnet" style="display:none"> (<i>int</i> / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>Hlong</i>)</span><span data-if="c" style="display:none"> (<i>Hlong</i>)</span></span>
</div>
<p class="pardesc">Lower threshold for the hysteresis threshold operation
(negative if no thresholding is desired).</p>
<p class="pardesc"><span class="parcat">Default:
      </span>20</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>5, 10, 15, 20, 25, 30, 40</p>
<p class="pardesc"><span class="parcat">Minimum increment:
      </span>1</p>
<p class="pardesc"><span class="parcat">Recommended increment:
      </span>5</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>Low &gt;= 1 || Low &lt; 0</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="High" class="parname"><b><code><span data-if="hdevelop" style="display:inline">High</span><span data-if="c" style="display:none">High</span><span data-if="cpp" style="display:none">High</span><span data-if="com" style="display:none">High</span><span data-if="dotnet" style="display:none">high</span><span data-if="python" style="display:none">high</span></code></b> (input_control)  </span><span>integer <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">int</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (integer)</span><span data-if="dotnet" style="display:none"> (<i>int</i> / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>Hlong</i>)</span><span data-if="c" style="display:none"> (<i>Hlong</i>)</span></span>
</div>
<p class="pardesc">Upper threshold for the hysteresis threshold operation
(negative if no thresholding is desired).</p>
<p class="pardesc"><span class="parcat">Default:
      </span>40</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>10, 15, 20, 25, 30, 40, 50, 60, 70</p>
<p class="pardesc"><span class="parcat">Minimum increment:
      </span>1</p>
<p class="pardesc"><span class="parcat">Recommended increment:
      </span>5</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>High &gt;= 1 || High &lt; 0 &amp;&amp; High &gt;= Low</code></p>
</div>
<div data-if="hdevelop" style="display:inline">
</div>
<div data-if="c" style="display:none">
</div>
<div data-if="cpp" style="display:none">
</div>
<div data-if="com" style="display:none">
</div>
<div data-if="dotnet" style="display:none">
</div>
<h2 id="sec_result">结果</h2>
<p><code><span data-if="hdevelop" style="display:inline">edges_color</span><span data-if="c" style="display:none">edges_color</span><span data-if="cpp" style="display:none">EdgesColor</span><span data-if="com" style="display:none">EdgesColor</span><span data-if="dotnet" style="display:none">EdgesColor</span><span data-if="python" style="display:none">edges_color</span></code> returns <TT>2</TT> (
      <TT>H_MSG_TRUE</TT>)
     if all parameters are correct
and no error occurs during execution.  If the input is empty the
behavior can be set via
<a href="set_system.html"><code><span data-if="hdevelop" style="display:inline">set_system('no_object_result',&lt;Result&gt;)</span><span data-if="c" style="display:none">set_system("no_object_result",&lt;Result&gt;)</span><span data-if="cpp" style="display:none">SetSystem("no_object_result",&lt;Result&gt;)</span><span data-if="com" style="display:none">SetSystem("no_object_result",&lt;Result&gt;)</span><span data-if="dotnet" style="display:none">SetSystem("no_object_result",&lt;Result&gt;)</span><span data-if="python" style="display:none">set_system("no_object_result",&lt;Result&gt;)</span></code></a>.  If
necessary, an exception is raised.</p>
<h2 id="sec_successors">可能的后置算子</h2>
<p>
<code><a href="threshold.html"><span data-if="hdevelop" style="display:inline">threshold</span><span data-if="c" style="display:none">threshold</span><span data-if="cpp" style="display:none">Threshold</span><span data-if="com" style="display:none">Threshold</span><span data-if="dotnet" style="display:none">Threshold</span><span data-if="python" style="display:none">threshold</span></a></code>
</p>
<h2 id="sec_alternatives">可替代算子</h2>
<p>
<code><a href="edges_color_sub_pix.html"><span data-if="hdevelop" style="display:inline">edges_color_sub_pix</span><span data-if="c" style="display:none">edges_color_sub_pix</span><span data-if="cpp" style="display:none">EdgesColorSubPix</span><span data-if="com" style="display:none">EdgesColorSubPix</span><span data-if="dotnet" style="display:none">EdgesColorSubPix</span><span data-if="python" style="display:none">edges_color_sub_pix</span></a></code>
</p>
<h2 id="sec_see">参考其它</h2>
<p>
<code><a href="edges_image.html"><span data-if="hdevelop" style="display:inline">edges_image</span><span data-if="c" style="display:none">edges_image</span><span data-if="cpp" style="display:none">EdgesImage</span><span data-if="com" style="display:none">EdgesImage</span><span data-if="dotnet" style="display:none">EdgesImage</span><span data-if="python" style="display:none">edges_image</span></a></code>, 
<code><a href="edges_sub_pix.html"><span data-if="hdevelop" style="display:inline">edges_sub_pix</span><span data-if="c" style="display:none">edges_sub_pix</span><span data-if="cpp" style="display:none">EdgesSubPix</span><span data-if="com" style="display:none">EdgesSubPix</span><span data-if="dotnet" style="display:none">EdgesSubPix</span><span data-if="python" style="display:none">edges_sub_pix</span></a></code>, 
<code><a href="info_edges.html"><span data-if="hdevelop" style="display:inline">info_edges</span><span data-if="c" style="display:none">info_edges</span><span data-if="cpp" style="display:none">InfoEdges</span><span data-if="com" style="display:none">InfoEdges</span><span data-if="dotnet" style="display:none">InfoEdges</span><span data-if="python" style="display:none">info_edges</span></a></code>, 
<code><a href="nonmax_suppression_amp.html"><span data-if="hdevelop" style="display:inline">nonmax_suppression_amp</span><span data-if="c" style="display:none">nonmax_suppression_amp</span><span data-if="cpp" style="display:none">NonmaxSuppressionAmp</span><span data-if="com" style="display:none">NonmaxSuppressionAmp</span><span data-if="dotnet" style="display:none">NonmaxSuppressionAmp</span><span data-if="python" style="display:none">nonmax_suppression_amp</span></a></code>, 
<code><a href="hysteresis_threshold.html"><span data-if="hdevelop" style="display:inline">hysteresis_threshold</span><span data-if="c" style="display:none">hysteresis_threshold</span><span data-if="cpp" style="display:none">HysteresisThreshold</span><span data-if="com" style="display:none">HysteresisThreshold</span><span data-if="dotnet" style="display:none">HysteresisThreshold</span><span data-if="python" style="display:none">hysteresis_threshold</span></a></code>
</p>
<h2 id="sec_references">References</h2>
<p>

C. Steger: “Subpixel-Precise Extraction of Lines and Edges”;
International Archives of Photogrammetry and Remote Sensing,
vol. XXXIII, part B3; pp. 141-156; 2000.
<br>
C. Steger: “Unbiased Extraction of Curvilinear Structures from 2D
and 3D Images”; Herbert Utz Verlag, München; 1998.
<br>
S. Di Zenzo: “A Note on the Gradient of a Multi-Image”; Computer
Vision, Graphics, and Image Processing, vol. 33; pp. 116-125;
1986.
<br>
Aldo Cumani: “Edge Detection in Multispectral Images”; Computer
Vision, Graphics, and Image Processing: Graphical Models and Image
Processing, vol. 53, no. 1; pp. 40-51; 1991.
<br>
J.Canny: “Finding Edges and Lines in Images”; Report, AI-TR-720;
M.I.T. Artificial Intelligence Lab., Cambridge; 1983.
<br>
J.Canny: “A Computational Approach to Edge Detection”; IEEE
Transactions on Pattern Analysis and Machine Intelligence; PAMI-8,
vol. 6; pp. 679-698; 1986.
<br>
R.Deriche: “Using Canny's Criteria to Derive a Recursively
Implemented Optimal Edge Detector”; International Journal of
Computer Vision; vol. 1, no. 2; pp. 167-187; 1987.
<br>
R.Deriche: “Fast Algorithms for Low-Level Vision”; IEEE
Transactions on Pattern Analysis and Machine Intelligence; PAMI-12,
no. 1; pp. 78-87; 1990.
<br>
J. Shen, S. Castan: “An Optimal Linear Operator for Step Edge
Detection”; Computer Vision, Graphics, and Image Processing:
Graphical Models and Image Processing, vol. 54, no. 2;
pp. 112-133; 1992.
</p>
<h2 id="sec_module">模块</h2>
<p>
Foundation</p>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
